package ma.fizazi.missionsmanagement.business.authentication;

import java.util.ArrayList;
import java.util.List;

import ma.fizazi.missionsmanagement.business.utilisateurs.UtilisateurBusiness;
import ma.fizazi.missionsmanagement.model.Authority;
import ma.fizazi.missionsmanagement.model.Utilisateur;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

public class UserDetailsServiceImpl implements UserDetailsService {

	@Autowired
	UtilisateurBusiness utilisateurBusiness;

	public UserDetails loadUserByUsername(String username)
			throws UsernameNotFoundException {

		Utilisateur utilisateur = new Utilisateur();
		try {
			utilisateur = utilisateurBusiness.getUserByMaticule(username);
			Authority authority = new Authority();
			authority.setAuthority(utilisateur.getProfil().getLibelle());
			utilisateur.setAuthority(authority);
		} catch (Exception e) {
			throw new UsernameNotFoundException(
					"getUserByUserName returned null.");
		}

		List<String> authorities = new ArrayList<String>();
		authorities.add(utilisateur.getProfil().getLibelle());
		
		if ("Directeur".equals(utilisateur.getProfil().getLibelle())) {
			authorities.add("ChefDeProjet");
			authorities.add("Consultant");
		}
		
		if ("ChefDeProjet".equals(utilisateur.getProfil().getLibelle())) {
			authorities.add("Consultant");
		}

		utilisateur.setUserAuthorities(authorities);
		return (UserDetails) utilisateur;
	}

}